﻿<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:Locals="clr-namespace:ASPItalia.ModelVirtualCasting.Silverlight"
             mc:Ignorable="d"
             xmlns:System="clr-namespace:System;assembly=mscorlib"
             x:Class="ASPItalia.ModelVirtualCasting.Silverlight.SearchControls">
    <UserControl.Resources>
        <ControlTemplate x:Key="ValidationToolTipTemplate">
            <Grid x:Name="Root"
                  Margin="5,0"
                  Opacity="0"
                  RenderTransformOrigin="0,0">
                <Grid.RenderTransform>
                    <TranslateTransform x:Name="xform"
                                        X="-25" />
                </Grid.RenderTransform>
                <VisualStateManager.VisualStateGroups>
                    <VisualStateGroup x:Name="OpenStates">
                        <VisualStateGroup.Transitions>
                            <VisualTransition GeneratedDuration="0" />
                            <VisualTransition GeneratedDuration="0:0:0.2"
                                              To="Open">
                                <Storyboard>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="X"
                                                                   Storyboard.TargetName="xform">
                                        <SplineDoubleKeyFrame KeyTime="0:0:0.2"
                                                              Value="0" />
                                    </DoubleAnimationUsingKeyFrames>
                                    <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
                                                                   Storyboard.TargetName="Root">
                                        <SplineDoubleKeyFrame KeyTime="0:0:0.2"
                                                              Value="1" />
                                    </DoubleAnimationUsingKeyFrames>
                                </Storyboard>
                            </VisualTransition>
                        </VisualStateGroup.Transitions>
                        <VisualState x:Name="Closed">
                            <Storyboard>
                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
                                                               Storyboard.TargetName="Root">
                                    <SplineDoubleKeyFrame KeyTime="0"
                                                          Value="0" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                        </VisualState>
                        <VisualState x:Name="Open">
                            <Storyboard>
                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="X"
                                                               Storyboard.TargetName="xform">
                                    <SplineDoubleKeyFrame KeyTime="0"
                                                          Value="0" />
                                </DoubleAnimationUsingKeyFrames>
                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
                                                               Storyboard.TargetName="Root">
                                    <SplineDoubleKeyFrame KeyTime="0"
                                                          Value="1" />
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                        </VisualState>
                    </VisualStateGroup>
                </VisualStateManager.VisualStateGroups>
                <Border Background="#052A2E31"
                        CornerRadius="5"
                        Margin="4,4,-4,-4" />
                <Border Background="#152A2E31"
                        CornerRadius="4"
                        Margin="3,3,-3,-3" />
                <Border Background="#252A2E31"
                        CornerRadius="3"
                        Margin="2,2,-2,-2" />
                <Border Background="#352A2E31"
                        CornerRadius="2"
                        Margin="1,1,-1,-1" />
                <Border Background="#FFDC000C"
                        CornerRadius="2" />
                <Border CornerRadius="2">
                    <TextBlock Foreground="White"
                               MaxWidth="250"
                               Margin="8,4,8,4"
                               TextWrapping="Wrap"
                               Text="{Binding (Validation.Errors)[0].ErrorContent}"
                               UseLayoutRounding="false" />
                </Border>
            </Grid>
        </ControlTemplate>
        <Style x:Key="SearchTextBoxStyle"
               TargetType="TextBox">
            <Setter Property="BorderThickness"
                    Value="1" />
            <Setter Property="Background">
                <Setter.Value>
                    <LinearGradientBrush EndPoint="0.5,1"
                                         StartPoint="0.5,0">
                        <GradientStop Color="#FF3D3A3A"
                                      Offset="0" />
                        <GradientStop Color="#FFABABAB"
                                      Offset="0.203" />
                    </LinearGradientBrush>
                </Setter.Value>
            </Setter>
            <Setter Property="Foreground"
                    Value="#FF000000" />
            <Setter Property="Padding"
                    Value="2" />
            <Setter Property="BorderBrush"
                    Value="White" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="TextBox">
                        <Grid x:Name="RootElement">
                            <VisualStateManager.VisualStateGroups>
                                <VisualStateGroup x:Name="CommonStates">
                                    <VisualState x:Name="Normal" />
                                    <VisualState x:Name="MouseOver">
                                        <Storyboard>
                                            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"
                                                                          Storyboard.TargetName="MouseOverBorder">
                                                <SplineColorKeyFrame KeyTime="0"
                                                                     Value="#FF99C1E2" />
                                            </ColorAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="Disabled">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
                                                                           Storyboard.TargetName="DisabledVisualElement">
                                                <SplineDoubleKeyFrame KeyTime="0"
                                                                      Value="1" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="ReadOnly">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
                                                                           Storyboard.TargetName="ReadOnlyVisualElement">
                                                <SplineDoubleKeyFrame KeyTime="0"
                                                                      Value="1" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name="FocusStates">
                                    <VisualState x:Name="Focused">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
                                                                           Storyboard.TargetName="FocusVisualElement">
                                                <SplineDoubleKeyFrame KeyTime="0"
                                                                      Value="1" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="Unfocused">
                                        <Storyboard>
                                            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"
                                                                           Storyboard.TargetName="FocusVisualElement">
                                                <SplineDoubleKeyFrame KeyTime="0"
                                                                      Value="0" />
                                            </DoubleAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                                <VisualStateGroup x:Name="ValidationStates">
                                    <VisualState x:Name="Valid" />
                                    <VisualState x:Name="InvalidUnfocused">
                                        <Storyboard>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
                                                                           Storyboard.TargetName="ValidationErrorElement">
                                                <DiscreteObjectKeyFrame KeyTime="0">
                                                    <DiscreteObjectKeyFrame.Value>
                                                        <Visibility>Visible</Visibility>
                                                    </DiscreteObjectKeyFrame.Value>
                                                </DiscreteObjectKeyFrame>
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                    <VisualState x:Name="InvalidFocused">
                                        <Storyboard>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility"
                                                                           Storyboard.TargetName="ValidationErrorElement">
                                                <DiscreteObjectKeyFrame KeyTime="0">
                                                    <DiscreteObjectKeyFrame.Value>
                                                        <Visibility>Visible</Visibility>
                                                    </DiscreteObjectKeyFrame.Value>
                                                </DiscreteObjectKeyFrame>
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsOpen"
                                                                           Storyboard.TargetName="validationTooltip">
                                                <DiscreteObjectKeyFrame KeyTime="0">
                                                    <DiscreteObjectKeyFrame.Value>
                                                        <System:Boolean>True</System:Boolean>
                                                    </DiscreteObjectKeyFrame.Value>
                                                </DiscreteObjectKeyFrame>
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                            <Border x:Name="Border"
                                    BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    Background="{TemplateBinding Background}"
                                    Opacity="1">
                                <Grid>
                                    <Border x:Name="ReadOnlyVisualElement"
                                            Background="#5EC9C9C9"
                                            Opacity="0" />
                                    <Border x:Name="MouseOverBorder"
                                            BorderBrush="Transparent"
                                            BorderThickness="1">
                                        <ScrollViewer x:Name="ContentElement"
                                                      BorderThickness="0"
                                                      IsTabStop="False"
                                                      Padding="{TemplateBinding Padding}" />
                                    </Border>
                                </Grid>
                            </Border>
                            <Border x:Name="DisabledVisualElement"
                                    BorderBrush="#A5F7F7F7"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    Background="#A5F7F7F7"
                                    IsHitTestVisible="False"
                                    Opacity="0" />
                            <Border x:Name="FocusVisualElement"
                                    BorderBrush="#FF6DBDD1"
                                    BorderThickness="{TemplateBinding BorderThickness}"
                                    IsHitTestVisible="False"
                                    Margin="1"
                                    Opacity="0" />
                            <Border x:Name="ValidationErrorElement"
                                    BorderBrush="#FFDB000C"
                                    BorderThickness="1"
                                    CornerRadius="1"
                                    Visibility="Collapsed">
                                <ToolTipService.ToolTip>
                                    <ToolTip x:Name="validationTooltip"
                                             DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                             Placement="Right"
                                             PlacementTarget="{Binding RelativeSource={RelativeSource TemplatedParent}}"
                                             Template="{StaticResource ValidationToolTipTemplate}">
                                        <ToolTip.Triggers>
                                            <EventTrigger RoutedEvent="Canvas.Loaded">
                                                <BeginStoryboard>
                                                    <Storyboard>
                                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="IsHitTestVisible"
                                                                                       Storyboard.TargetName="validationTooltip">
                                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                                <DiscreteObjectKeyFrame.Value>
                                                                    <System:Boolean>true</System:Boolean>
                                                                </DiscreteObjectKeyFrame.Value>
                                                            </DiscreteObjectKeyFrame>
                                                        </ObjectAnimationUsingKeyFrames>
                                                    </Storyboard>
                                                </BeginStoryboard>
                                            </EventTrigger>
                                        </ToolTip.Triggers>
                                    </ToolTip>
                                </ToolTipService.ToolTip>
                                <Grid Background="Transparent"
                                      HorizontalAlignment="Right"
                                      Height="12"
                                      Margin="1,-4,-4,0"
                                      VerticalAlignment="Top"
                                      Width="12">
                                    <Path Data="M 1,0 L6,0 A 2,2 90 0 1 8,2 L8,7 z"
                                          Fill="#FFDC000C"
                                          Margin="1,3,0,0" />
                                    <Path Data="M 0,0 L2,0 L 8,6 L8,8"
                                          Fill="#ffffff"
                                          Margin="1,3,0,0" />
                                </Grid>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Width"
                    Value="100" />
        </Style>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot">
        <Border BorderBrush="White"
                BorderThickness="1"
                Background="#69FFFFFF"
                Padding="4,2,4,6">
            <StackPanel>
                <TextBlock TextWrapping="Wrap"
                           Text="Filtra" />
                <TextBox TextWrapping="Wrap"
                         Text="{Binding FilterData.FullName, Mode=TwoWay}"
                         Style="{StaticResource SearchTextBoxStyle}"
                         Locals:TextChanged.Command="{Binding FilterCommand}"/>
               <!-- <TextBox TextWrapping="Wrap"
                         Text="{Binding FilterData.LastName, Mode=TwoWay}"
                         Style="{StaticResource SearchTextBoxStyle}"
                         Locals:TextChanged.Command="{Binding FilterCommand}" />-->
            </StackPanel>
        </Border>
    </Grid>
</UserControl>